Esercizi emergenza cov2019: OOP

Esercizio A

Consegna:

Conteggio dei valori in comune tra due array int[]
Realizzare il seguente metodo:

public static int contaValoriComuni(int[] array1, int[] array2)

Il metodo deve determinare quanti valori in comune ci sono tra i due array in ingresso, ovvero quei valori che si trovano in entrambi gli array. All’interno di ciascuno dei due array un certo valore può eventualmente ripetersi più volte ma deve essere considerato come un singolo valore (non deve essere conteggiato più volte).

Esempi:

array1 array2 Risultato
{ 4, 7, 12, 7, 5 } { 9, 3, 2, 11, 3 } 0
{ 2, 13, 6, 2, 6 } { 1, 5, 7, 2, 9 } 1 (per il 2)
{ 6, 10, 4, 3, 4 } { 4, 8, 10, 5, 10 } 2 (per il 4 e 10)

Codice:

package esercizioa;

public class Esercizioa {
    
    public static void main(String[] args) {
        int[] array1 = new int[5];
        int[] array2 = new int[5];
        
        System.out.print("Array 1 { ");
        for (int i = 0; i < 5; i++){
            array1[i] = (int)(Math.random()*100);
            System.out.print(array1[i] + " ");
        }
        System.out.print("}" + "\n");
        
        System.out.print("Array 2 { ");
        for (int i = 0; i < 5; i++){
            array2[i] = (int)(Math.random()*100);
            System.out.print(array2[i] + " ");
        }
        System.out.print("}" + "\n");
        
        contaValoriComuni(array1, array2);
    }
    
    public static int contaValoriComuni(int[] array1, int[] array2){
        int r = 0;
        String n = " ";
        for (int a = 0; a < 5; a++){
            for (int b = 0; b < 5; b++){
                if (array1[a] == array2[b]){
                    r++;
                    n = n + array1[a];
                }
            }
        }
        System.out.print("Risultato: " + r + " (" + n + " ).");
        return r;
    }
   
}

 

Esercizio B

Consegna:

Si vuol realizzare una classe, Esercizio, che contiene un solo
metodo di classe, con il seguente prototipo:
public static int[] eliminaDoppi (int[] v)

Il metodo eliminaDoppi riceve in input un array v di interi, dove ciascun intero ha un valore
compreso tra 0 e 9; in v possono esserci più numeri aventi lo stesso valore.
Il metodo eliminaDoppi
restituisce un nuovo array contenente tutti gli interi di v non ripetuti.
Ad esempio, se l’array v ha i seguenti elementi: 2 1 4 1 7 2 9 0 0 7 3,
allora l’array restituito avrà i seguenti elementi: 2 1 4 7 9 0 3

1. Scrivi la classe Esercizio
2. Scrivi una classe ProvaEsercizio, che verifica il corretto funzionamento della classe
Esercizio, facendo inserire all’utente una sequenza di numeri interi tra 0 e 9, anche ripetuti,
e visualizzando l’array restituito dal metodo eliminaDoppi. L’utente può scegliere la
lunghezza e gli elementi della sequenza come vuole.
Suggerimento: per implementare il metodo eliminaDoppi conviene utilizzare un array di boolean di
dimensione 10, al fine di tenere traccia dei numeri già incontrati.

Codice:

PRIMA CLASSE
package eserciziob;
public class esercizio {

public String[] s;

//metodo che restituisce l’array senza numeri doppi
public int[] EliminaDoppi(int[] v, int n){
boolean[] a = new boolean[n];
int z = 0;
String s = “Array finale { “;
for (int x = 0; x < 10; x++){
z = 0;
for (int y = 0; y < n; y++){
if (v[y] == x){
z++;
if (z >= 2){
a[y] = true;
} else {
s = s + v[y] + ” “;
a[y] = false;
}
}
}
}
s = s + “}”;
System.out.println(s);
return v;
}

}

SECONDA CLASSE
package eserciziob;
import java.util.Scanner;
public class provaesercizio {
    public static void main(String[] args) {

esercizio a = new esercizio();

Scanner in = new Scanner(System.in);

        System.out.println (“Lunghezza array: “);
int n = in.nextInt();
int[] v = new int[10];

for (int i = 0; i<n; i++){
System.out.println(“Elemento ” + i + ” : “);
v[i] = in.nextInt();
}

System.out.print(“\n” + “Array iniziale { “);
for (int i = 0; i<n; i++){
System.out.print(v[i] + ” “);
}
System.out.print(“}” + “\n”);

a.EliminaDoppi(v, n);

}
}  

Precedente Coronavirus matrici Successivo Numeri casuali su JavaScript